package com.onerway.entity.transaction;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TransactionRecord {

    /**
     * Onerway 创建的交易订单号，对应商户订单号
     */
    private String transactionId;
    /**
     * 商户创建的商户交易订单号， 不同的订单号视为不同的交易
     */
    private String merchantTxnId;
    /**
     * 交易完成时间
     */
    private String txnTime;
    /**
     * 来自 Onerway 的原交易订单号。
     */
    private String originTransactionId;
    /**
     * 产品类型，请参阅
     */
    private String productType;
    /**
     * 子产品类型，请参阅
     */
    private String subProductType;
    /**
     * 交易类型，请参阅
     */
    private String txnType;
    /**
     * 交易处理结果。 请参阅
     */
    private String status;
    /**
     * 交易失败原因
     */
    private String reason;
    /**
     * 具体支付方式，包括卡和本地支付类型
     */
    private String paymentMethod;
    /**
     * 钱包的品牌名称
     */
    private String walletTypeName;
    /**
     * 订单金额，以“元”为单位。注意如有小数，保留两位小数
     */
    private String orderAmount;
    /**
     * 交易订单币种。 请参阅 ISO 4217 货币代码
     */
    private String orderCurrency;
    /**
     * 订单金额转换成结算币种后的金额
     */
    private String txnAmount;
    /**
     * 结算币种。 请参阅 ISO 4217 货币代码
     */
    private String txnCurrency;
    /**
     * 汇率 (txnAmount = orderAmount * settleRate)。
     */
    private String settleRate;
    /**
     * 可报关金额
     */
    private String customsDeclarationAmount;
    /**
     * 可用于报关的金额对应币种。 请参阅 ISO 4217货币代码
     */
    private String customsDeclarationCurrency;
    /**
     * ARN
     */
    private String arn;
    /**
     * 商户应用程序ID。 商户注册网站时，OnerWay会为商户创建一个应用id
     */
    private String appId;
    /**
     * 交易网站
     */
    private String website;
    /**
     * 卡bin所属国家
     */
    private String cardBinCountry;
    /**
     * 交易卡号
     */
    private String cardNumber;
    /**
     * 用户支付状态，true：已支付，false：未支付，注意只有 `Sofort` 交易可能关注此字段；空值时忽略此字段
     */
    private String userPaymentStatus;
    /**
     * 持卡人姓名
     */
    private String holderName;
    /**
     * 责任转移
     */
    private String eci;
}
